#include<stdlib.h>
#include<assert.h>
#include "TabDynEnnemi.h"

void tabdynInit(TabDynEnnemi* tab)
{
    tab->ad=(Ennemi*)malloc(sizeof (Ennemi));
    tab->taille_utilisee=0;
    tab->capacite=1;
}

void tabdynTestament(TabDynEnnemi* tab)
{
     if(tab->ad!=NULL)
    {
        free(tab->ad);
        tab->ad=NULL;
        tab->capacite=0;
        tab->taille_utilisee=0;
    }
}

void tabdynAjouterEnnemi(TabDynEnnemi* tab,const Ennemi* e)
{
     if(tab->capacite==tab->taille_utilisee)
    {
        int i;
        Ennemi* nvtab = tab->ad;
        tab->ad=(Ennemi*)malloc(2* tab->capacite*(sizeof(Ennemi)));
        for(i=0; i<tab->taille_utilisee; i++)
        {
            tab->ad[i]=nvtab[i];
        }
        free(nvtab);
        tab->capacite = 2*tab->capacite;
    }
    tab->ad[tab->taille_utilisee]=*e;
    tab->taille_utilisee++;
}

void tabdynSupprimerEnnemi(TabDynEnnemi* tab,int position)
{
     int i;
     assert(position>=0);
    assert(position<tab->taille_utilisee);
    for(i=position; i<tab->taille_utilisee-1; i++)
    {
        tab->ad[i]=tab->ad[i+1];
    }
    if(tab->taille_utilisee < tab->capacite/3)
    {
        Ennemi* tmp=tab->ad;
        tab->ad=(Ennemi*)malloc((tab->capacite/2)*sizeof(Ennemi));
        for(i=0;i<tab->taille_utilisee;i++)
        {
            tab->ad[i]=tmp[i];
        }
        free(tmp);
        tab->capacite=tab->capacite/2;
    }
    tab->taille_utilisee--;
}

